<?php

namespace app\admin\model\check;

use app\admin\model\Lift;
use app\common\model\MoneyLog;
use app\common\model\ScoreLog;
use think\Model;

class Order extends Model
{

    // 表名
    protected $name = 'store_order';
    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';
    // 定义时间戳字段名
    protected $createTime = 'add_time';
    protected $updateTime = 'up_time';
    // 追加属性
    protected $append = [

    ];
    /**
     * 套餐时长
     * @var string[]
     */
    public function get_pay_type_name()
    {
        return [
            1 => 'weixin',
            2 => 'yue',
            3 => 'offline',
            4 => 'alipay',
            5 => 'public'
        ];
    }
    /**
     * 套餐时长
     * @var string[]
     */
    public function get_duration_name()
    {
        return [
            1 => '单次',
            2 => '半年',
            3 => '一年',
        ];
    }
    /**
     * 套餐规格
     * @var string[]
     */
    public function get_specifications_name()
    {
        return [
            1 => '630kg及以下',
            2 => '800kg',
            3 => '1000kg',
        ];
    }
    /**
     * 套餐规格
     * @var string[]
     */
    public function get_package_name()
    {
        return [
            0 => '临时清洁',
            1 => '筑福清洁',
            2 => '健康清洁',
            3 => '幸福清洁',
            4 => '养生清洁',
            5 => '免费清洁',
        ];
    }
    /**
     * 订单状态
     * @var string[]
     */
    public function get_status_name()
    {

        return [
            12 => '服务中',
            13 => '服务完成',
            14 => '已取消',
            3 => '待评价',
            4 => '已完成',
            5 => '售后',
            6 => '已取消',
            7 => '已删除',
            8 => '待服务',
            9 => '待支付',
            10 => '待接单',
            11 => '待确认',
            15 => '待退款',
            0 => '待支付',
            1 => '待接单',
            2 => '待服务',
            -1 => '已退款',
            -2 => '已退款',
        ];
    }

    public function getOriginData()
    {
        return $this->origin;
    }


    public function getGenderList()
    {
        return ['1' => __('Male'), '0' => __('Female')];
    }

    public function getStatusList()
    {
        return ['normal' => __('Normal'), 'hidden' => __('Hidden')];
    }


    public function getPrevtimeTextAttr($value, $data)
    {
        $value = $value ? $value : ($data['prevtime'] ?? "");
        return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
    }

    public function getLogintimeTextAttr($value, $data)
    {
        $value = $value ? $value : ($data['logintime'] ?? "");
        return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
    }

    public function getJointimeTextAttr($value, $data)
    {
        $value = $value ? $value : ($data['jointime'] ?? "");
        return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value;
    }

    protected function setPrevtimeAttr($value)
    {
        return $value && !is_numeric($value) ? strtotime($value) : $value;
    }

    protected function setLogintimeAttr($value)
    {
        return $value && !is_numeric($value) ? strtotime($value) : $value;
    }

    protected function setJointimeAttr($value)
    {
        return $value && !is_numeric($value) ? strtotime($value) : $value;
    }

    protected function setBirthdayAttr($value)
    {
        return $value ? $value : null;
    }

    /**
     * 一对一关联上级用户信息
     */
    public function spread()
    {
        return $this->belongsTo('app\\admin\\model\\User', 'uid', 'spread_uid', [], 'LEFT')->field(['uid', 'nickname'])->setEagerlyType(0);
    }

    /**
     * 一对一关联用户表
     */
    public function user()
    {
        return $this->belongsTo('app\\admin\\model\\User', 'personnel_id', 'uid', [], 'LEFT')->field(['uid', 'nickname', 'phone', 'spread_uid'])->setEagerlyType(0);
    }

    public function division()
    {
        return $this->belongsTo('app\\admin\\model\\User', 'uid', 'division_id', [], 'LEFT')->field(['uid', 'nickname'])->setEagerlyType(0);
    }

    /**
     * 一对一拼团获取状态
     */
    public function pink()
    {
        return $this->belongsTo('app\\admin\\model\\StorePink', 'id', 'pink_id', [], 'LEFT')->field(['id', 'order_id_key', 'status'])->setEagerlyType(0);
    }

    /**
     * 订单关联店员
     * @return
     */
    public function staff()
    {
        return $this->belongsTo('app\\admin\\model\\SystemStoreStaff', 'uid', 'clerk_id', [], 'LEFT')->setEagerlyType(0);
    }

    /**
     * 订单关联店员
     * @return
     */
    public function store()
    {
        return $this->belongsTo('app\\admin\\model\\SystemStore', 'id', 'store_id', [], 'LEFT')->field(['id', 'name'])->setEagerlyType(0);
    }

    /**
     * 店员关联用户
     */
    public function staffUser()
    {
        return $this->belongsTo('app\\admin\\model\\User', 'uid', 'staff_uid', [], 'LEFT')->field(['uid', 'name'])->setEagerlyType(0);
    }

    /**
     * 关联订单发票
     */
    public function invoice()
    {
        return $this->belongsTo('app\\admin\\model\\StoreOrderInvoice', 'order_id', 'id')->setEagerlyType(0);
    }

    /**
     * 关联电梯
     */
    public function lift()
    {
        return $this->belongsTo('app\admin\model\Lift', 'lift_id', 'id', [], 'LEFT')->setEagerlyType(0);
    }


    /**
     * 一对多关联退款订单
     */
    public function refund()
    {
        return $this->belongsTo('app\\admin\\model\\StoreOrderRefund', 'store_order_id', 'id')->where('refund_type', '<>', 3)->where('is_cancel', 0);
    }

    /**
     * 关联售后
     */
    public function sales()
    {
        return $this->belongsTo('app\\admin\\model\\SalesOrder', 'order_id', 'order_id');
    }

    /**
     * 关联服务单
     */
    public function service()
    {
        return $this->belongsTo('app\admin\model\Service', 'order_id', 'order_id');
    }
    /**
     * 关联电梯
     */
    public function free()
    {
        return $this->belongsTo('app\\admin\\model\\check\\FreeClean', 'free_clean_id', 'id', [], 'LEFT')->setEagerlyType(0);
    }

}
